"""
变量与数据类型
学习目标：
1. 理解变量的概念
2. 掌握Python的基本数据类型
3. 学习变量的命名规则
4. 了解类型转换
"""

# ==================== 1. 变量的定义 ====================
print("=" * 50)
print("1. 变量的定义")
print("=" * 50)

# 定义一个变量
name = "张三"
print("姓名:", name)

age = 18
print("年龄:", age)

height = 1.75
print("身高:", height, "米")

is_student = True
print("是否是学生:", is_student)

print()

# ==================== 2. 基本数据类型 ====================
print("=" * 50)
print("2. 基本数据类型")
print("=" * 50)

# 整数 int
score = 100
year = 2025
negative_num = -50
print("整数类型 (int):")
print(f"  分数: {score}, 类型: {type(score)}")
print(f"  年份: {year}, 类型: {type(year)}")
print(f"  负数: {negative_num}, 类型: {type(negative_num)}")

print()

# 浮点数 float
price = 9.99
pi = 3.14159
temperature = -5.5
print("浮点数类型 (float):")
print(f"  价格: {price}, 类型: {type(price)}")
print(f"  圆周率: {pi}, 类型: {type(pi)}")
print(f"  温度: {temperature}, 类型: {type(temperature)}")

print()

# 字符串 str
name = "李四"
message = '欢迎学习Python'
multi_line = """这是一个
多行
字符串"""
print("字符串类型 (str):")
print(f"  姓名: {name}, 类型: {type(name)}")
print(f"  消息: {message}, 类型: {type(message)}")
print(f"  多行文本: {multi_line}, 类型: {type(multi_line)}")

print()

# 布尔值 bool
is_sunny = True
is_raining = False
print("布尔类型 (bool):")
print(f"  是否晴天: {is_sunny}, 类型: {type(is_sunny)}")
print(f"  是否下雨: {is_raining}, 类型: {type(is_raining)}")

print()

# ==================== 3. 变量的命名规则 ====================
print("=" * 50)
print("3. 变量命名规则示例")
print("=" * 50)

# 正确的命名
student_name = "王五"        # 使用下划线分隔
studentAge = 20             # 驼峰命名法
SCHOOL_NAME = "清华大学"     # 常量通常用大写
_private_var = "私有变量"    # 下划线开头表示私有

print("正确的变量命名:")
print(f"  student_name = {student_name}")
print(f"  studentAge = {studentAge}")
print(f"  SCHOOL_NAME = {SCHOOL_NAME}")
print(f"  _private_var = {_private_var}")

print()

# 错误的命名示例（注释形式，不能运行）
"""
2name = "错误"        # 不能以数字开头
my-name = "错误"      # 不能使用连字符
class = "错误"        # 不能使用Python关键字
"""

# ==================== 4. 多个变量赋值 ====================
print("=" * 50)
print("4. 多个变量赋值")
print("=" * 50)

# 同时给多个变量赋值
x, y, z = 1, 2, 3
print(f"x={x}, y={y}, z={z}")

# 给多个变量赋相同的值
a = b = c = 0
print(f"a={a}, b={b}, c={c}")

print()

# ==================== 5. 类型转换 ====================
print("=" * 50)
print("5. 类型转换")
print("=" * 50)

# 字符串转整数
str_num = "100"
int_num = int(str_num)
print(f"字符串 '{str_num}' 转为整数: {int_num}, 类型: {type(int_num)}")

# 字符串转浮点数
str_float = "3.14"
float_num = float(str_float)
print(f"字符串 '{str_float}' 转为浮点数: {float_num}, 类型: {type(float_num)}")

# 整数转字符串
num = 999
str_num = str(num)
print(f"整数 {num} 转为字符串: '{str_num}', 类型: {type(str_num)}")

# 浮点数转整数（会丢失小数部分）
float_val = 9.99
int_val = int(float_val)
print(f"浮点数 {float_val} 转为整数: {int_val}, 类型: {type(int_val)}")

# 其他类型转布尔值
print(f"整数0转布尔: {bool(0)}")        # False
print(f"整数1转布尔: {bool(1)}")        # True
print(f"空字符串转布尔: {bool('')}")    # False
print(f"非空字符串转布尔: {bool('hi')}")  # True

print()

# ==================== 6. 变量的使用 ====================
print("=" * 50)
print("6. 变量的实际应用")
print("=" * 50)

# 个人信息
my_name = "赵六"
my_age = 22
my_height = 1.80
my_weight = 70.5
is_employed = True

print(f"姓名: {my_name}")
print(f"年龄: {my_age}岁")
print(f"身高: {my_height}米")
print(f"体重: {my_weight}公斤")
print(f"是否就业: {'是' if is_employed else '否'}")

# 计算BMI
bmi = my_weight / (my_height ** 2)
print(f"BMI指数: {bmi:.2f}")

print()

# ==================== 7. 变量的动态特性 ====================
print("=" * 50)
print("7. Python变量的动态类型特性")
print("=" * 50)

# 同一个变量可以赋不同类型的值
var = 100
print(f"var = {var}, 类型: {type(var)}")

var = "现在是字符串"
print(f"var = {var}, 类型: {type(var)}")

var = 3.14
print(f"var = {var}, 类型: {type(var)}")

var = True
print(f"var = {var}, 类型: {type(var)}")

print("\n✨ 变量是存储数据的容器，Python会自动识别数据类型！")

